import string
#将数字，英语单词以及其他字符串、满足前四种情况的个数设置为0
num_count = str_count = eng_count = big_eng_count = count = 0
guard_count = 2

# 字符的统计,判断密码长度及数字大小写字母和标点符号出现的次数
def keywards():
    # 判断密码的长度是否大于8，大于8 的话安全系数加一
    if len(keyward) >= 8:
        global guard_count
        guard_count += 1
    else:
        print("密码小于8位数...")
        # 判断密码中是否含有数字，并判断数字的个数
    for i in keyward:
        if i >= '0' and i <= '9':
            global  num_count
            num_count += 1
            # 判断密码中是否含有大写的英文字母，并判断出现的个数
        elif (i >= 'A' and i <= 'Z'):
            global  big_eng_count
            big_eng_count += 1
            # 判断密码中是否含有小写的引文字母，并判断出现的个数
        elif (i >= 'a' and i <= 'z'):
            global eng_count
            eng_count += 1
            # 判断密码中是否含有除数字和英文字母的其他字符，并判断出现的个数
        elif ((i >= '0' and i <= '9') and (i >= 'a' and i <= 'z') and (i >= 'A' and i <= 'Z')) == False:
            global str_count
            str_count += 1

#判断四个条件中满足几个，当满足三个及以上时安全系数加一
    global count
    if (num_count >= 1):
        count += 1
    if (eng_count >= 1):
        count += 1
    if (str_count >= 1):
        count += 1
    if (big_eng_count >= 1):
        count += 1
    if count >= 3:
        guard_count += 1
    else:
        print("密码中不包括数字，大小写字母中的三个及以上数目...")
    #print(f"安全系数为:{guard_count}")
    #print(f"数字的个数为：{num_count}\n大写字母的个数为:{big_eng_count}\n其他字符的个数为:{str_count}\n小写字母的个数为:{eng_count}")


#判断是否有出现连续三个及以上的字符
def str_lenth():
    flag = True
    # k 代表密码字符串的下标
    # l 代表重复出现的字符的个数
    k = 1
    l = 1
    # 密码长度小于2的话函数结束，不执行无任何操作
    if len(keyward) <= 2:
        return
    # 当密码长度为3时，判断是否时三个重复的字符
    elif len(keyward) == 3:
        if keyward[0] == keyward[1] == keyward[2]:
            print("密码中含有三个或以上的重复字符段...")
            return
        else:
            global guard_count
            guard_count += 1
    # 当密码的长度大于3时
    elif len(keyward) > 3:
        # 比较除了最后两位密码，看是否有重复的项
        for i in keyward[:-2]:
            #print(i,end="--")
            # 每三位进行比较
            for j in keyward[k:k+3]:
                #print(j,end="-----")
                # 如果有重复的项，重复项的个数加一
                if i == j:
                    l = l + 1
            #print(l)
            # 字符串下标的数值加一
            k += 1
            # 如果重复的项大于等于3
            if l >= 3:
                flag = False
            else:
                l = 1
            # if l < 3:
            #     l = 0
        #print(l)
        # 如果重复出现的字符小于3，安全系数加一
        if l < 3:
            guard_count += 1
        elif l >= 3:
            print("密码中含有三个或以上的重复字符段...")


# 程序的入口，输入提示信息及打印出结果

keyward = input("请输入您的密码：")
print("--------------------------------")
# 字符的统计, 判断密码长度及数字大小写字母和标点符号出现的次数
keywards()
# 判断是否有出现连续三个及以上的字符
str_lenth()
print(f"安全系数为:{guard_count}")
if guard_count == 5:
    print("密码设置成功.....")
